package Kernel;

import java.io.Serializable;

public class Ville implements Serializable {

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private String nom;
	private long population;
	private boolean existeAeroport;
	private boolean existeGare;
	private boolean existeGareRoutiere;
	private boolean existePort;

	/* #### Constructeurs #### */

	/**
	 * Constructeur par défaut de Ville
	 */
	public Ville() {
		this.nom = null;
		this.population = 0;
		this.existeAeroport = false;
		this.existeGare = false;
		this.existeGareRoutiere = false;
		this.existePort = false;
	}
	
	/**
	 * Constructeur avec le nom
	 */
	public Ville(String nom) {
		this.nom = nom;
		this.population = 0;
		this.existeAeroport = false;
		this.existeGare = false;
		this.existeGareRoutiere = false;
		this.existePort = false;
	}
	
	

	/**
	 * Constructeur paramétré de la ville 
	 * @param nom est le nom de la ville
	 * @param population est la population dans la ville
	 * @param existeAeroport est à true si il est possible de se rendre dans la ville par avion
	 * @param existeGare est à true si il est possible de se rendre dans la ville par train
	 * @param existeGareRoutiere est à true si il est possible de se rendre dans la ville par bus
	 * @param existePortest est à true si il est possible de se rendre dans la ville par bateau
	 */
	public Ville(String nom, long population, boolean existeAeroport,
			boolean existeGare, boolean existeGareRoutiere, boolean existePort) {
		this.nom = nom;
		this.population = population;
		this.existeAeroport = existeAeroport;
		this.existeGare = existeGare;
		this.existeGareRoutiere = existeGareRoutiere;
		this.existePort = existePort;
	}

	/* #### Methodes definies manuellement #### */

	/**
	 * Formatter l'objet pour la sauvegarde.
	 * @return contient les informations sur l'objet , séparés par des ";"
	 */
	public String print() {
		return this.nom + ";" + this.population + ";" + this.existeAeroport
				+ ";" + this.existeGare + ";" + this.existeGareRoutiere + ";"
				+ this.existePort + ";";
	}

	/* #### Methodes surchargees #### */

	@Override
	public String toString() {
		String accuReturn = "";
		accuReturn += "Ville : " + this.nom
				+ " : Il est possible de se rendre dans cette ville par : ";
		if (this.existeAeroport) {
			accuReturn += "|Avion|";
		}
		if (this.existeGare) {
			accuReturn += "|Train|";
		}
		if (this.existeGareRoutiere) {
			accuReturn += "|Bus|";
		}
		if (this.existePort) {
			accuReturn += "|Bateau|";
		}
		return accuReturn;
	}

	/* #### Mutateurs #### */

	public String getNom() {
		return nom;
	}

	public void setNom(String nom) {
		this.nom = nom;
	}

	public long getPopulation() {
		return population;
	}

	public void setPopulation(long population) {
		this.population = population;
	}

	public boolean isExisteAeroport() {
		return existeAeroport;
	}

	public void setExisteAeroport(boolean existeAeroport) {
		this.existeAeroport = existeAeroport;
	}

	public boolean isExisteGare() {
		return existeGare;
	}

	public void setExisteGare(boolean existeGare) {
		this.existeGare = existeGare;
	}

	public boolean isExisteGareRoutiere() {
		return existeGareRoutiere;
	}

	public void setExisteGareRoutiere(boolean existeGareRoutiere) {
		this.existeGareRoutiere = existeGareRoutiere;
	}

	public boolean isExistePort() {
		return existePort;
	}

	public void setExistePort(boolean existePort) {
		this.existePort = existePort;
	}
}
